((* extends "sbp_base.tex" *))
((* block messages_table *))
\newpage
\newpage
\setcounter{LTchunksize}{100}
\section{Message Types}
\label{sec:Messages}
\begin{large}
Packages define a logical collection of SBP messages. The contents and
layout of messages in packages marked \textbf{stable} are unlikely to
change in the future. \textbf{Draft} messages \emph{will change with
future development} and are detailed purely for \emph{informational
purposes only}. Many draft messages are implementation-defined, and
some collections, such as the acquisition package, are used for
internal development.
\end{large}\\

\begin{center}
  \begin{longtable}{{llllp{6.5cm}}}
    \toprule
    Package & Msg ID & Name & Size (bytes) & Description \\
    \midrule
      \textbf{Stable} & & & & \\
    \midrule
    ((*- for m in msgs *))
      ((* if m.is_real_message *)) 
        (((m.pkg|packagenameify|escape_tex|no_us|header_write))) &
        \hyperref[sec:(((m.name)))]{\texttt{((('%d'|format(m.sbp_id))))}} &
        \hyperref[sec:(((m.name)))]{\texttt{(((m.name|escape_tex)))}} &
        $\mathtt{(((m.size)))}$ &
        (((m.short_desc|removedir|escape_tex))) \\
      ((*- endif -*))
    ((*- endfor *))
    \midrule
      \textbf{Draft} & & & & \\
    \midrule
    ((*- for m in umsgs *))
      ((* if m.is_real_message *)) 
      (((m.pkg|packagenameify|escape_tex|no_us|header_write))) &
      \hyperref[sec:(((m.name)))]{\texttt{((('%d'|format(m.sbp_id))))}} &
      \hyperref[sec:(((m.name)))]{\texttt{(((m.name|escape_tex)))}} &
      $\mathtt{(((m.size)))}$ &
      (((m.short_desc|removedir|escape_tex))) \\
      ((*- endif -*))
    ((*- endfor *))
    \bottomrule
  \label{tab:messages}
  \end{longtable}
\captionof{table}{SBP message types}
\end{center}

((* endblock *))
